const { contextBridge, ipcRenderer } = require('electron')

// 暴露受保护的API到渲染进程
contextBridge.exposeInMainWorld('electronAPI', {
  // 获取应用信息
  getAppVersion: () => ipcRenderer.invoke('get-app-version'),
  getAppName: () => ipcRenderer.invoke('get-app-name'),
  
  // 窗口操作
  minimize: () => ipcRenderer.invoke('window-minimize'),
  maximize: () => ipcRenderer.invoke('window-maximize'),
  close: () => ipcRenderer.invoke('window-close'),
  
  // 系统信息
  getPlatform: () => process.platform,
  getArch: () => process.arch,
  
  // 文件系统操作（如果需要的话）
  // openFile: () => ipcRenderer.invoke('dialog:openFile'),
  // saveFile: (data) => ipcRenderer.invoke('dialog:saveFile', data),
  
  // 通知
  showNotification: (title, body) => ipcRenderer.invoke('show-notification', title, body),
  
  // 监听事件
  on: (channel, callback) => {
    // 白名单频道
    const validChannels = ['update-available', 'update-downloaded']
    if (validChannels.includes(channel)) {
      ipcRenderer.on(channel, callback)
    }
  },
  
  // 移除监听器
  removeAllListeners: (channel) => {
    const validChannels = ['update-available', 'update-downloaded']
    if (validChannels.includes(channel)) {
      ipcRenderer.removeAllListeners(channel)
    }
  }
})

// 安全地暴露一些Node.js API（如果需要的话）
contextBridge.exposeInMainWorld('nodeAPI', {
  // 版本信息
  version: process.version,
  
  // 环境变量
  env: process.env.NODE_ENV,
  
  // 平台信息
  platform: process.platform,
  arch: process.arch
})

// 防止在渲染进程中直接使用Node.js API
window.addEventListener('DOMContentLoaded', () => {
  // 可以在这里添加一些初始化逻辑
  console.log('Preload script loaded successfully')
})
